/**
 * 泛型类 GenericArray<T>，用于存储任意类型的数组
 */
public class GenericArray<T> {
    private T[] array; // 声明泛型数组

    /**
     * 构造方法，初始化指定大小的泛型数组
     * @param size 数组大小
     */
    public GenericArray(int size) {
        // 使用 Object 类型数组创建泛型数组
        array = (T[]) new Object[size];
    }

    /**
     * 设置指定索引处的值
     * @param index 索引
     * @param value 要设置的值
     */
    public void set(int index, T value) {
        array[index] = value;
    }

    /**
     * 获取指定索引处的值
     * @param index 索引
     * @return 索引处的值
     */
    public T get(int index) {
        return array[index];
    }

    /**
     * 主方法，用于测试 GenericArray 类
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建一个存储整数的泛型数组
        GenericArray<Integer> intArray = new GenericArray<>(5);
        intArray.set(0, 1);
        intArray.set(1, 2);
        intArray.set(2, 3);

        System.out.println(intArray.get(0));  // 输出: 1
        System.out.println(intArray.get(1));  // 输出: 2
        System.out.println(intArray.get(2));  // 输出: 3

        // 创建一个存储字符串的泛型数组
        GenericArray<String> stringArray = new GenericArray<>(3);
        stringArray.set(0, "Hello");
        stringArray.set(1, "World");

        System.out.println(stringArray.get(0));  // 输出: Hello
        System.out.println(stringArray.get(1));  // 输出: World
    }
}
